﻿/*
Plugin=DM_Show_CurDirFiles
Name1=显示选中目录中指定类型文件,左键运行，右键打开目录
Command1=DM_Show_CurDirFiles
Author=Kawvin
Version=0.1版本
*/

DM_Show_CurDirFiles(aParam){    ; 此Plugin执行的command为Test，代表执行Test函数,函数请预留一个aParam，用于QuickZ传递参数过来。
    DM_Show_CurDirFiles := MenuZ_GetSibling() ; 获取一个菜单对象，不是子菜单，是同级菜单
	DM_Show_CurDirFiles.SetParams({iconsSize:24})
	;DM_Show_CurDirFiles := MenuZ_GetSub() ; 获取一个子菜单对象
	;TemA:=StrSplit(aParam,`|)
	StringSplit, TemA,aParam, `|
	aDir=%TemA1%
	aExt=%TemA2%
	global gMenuZ
	If InStr(aDir, "{file:")
	{
		MySel:=gMenuZ.Data.Files
		MySel_FirstFile:=RegExReplace(MySel,"(.*)\r.*","$1")  ;取第一行
	}
	If InStr(FileExist(MySel_FirstFile), "D")  ;区分是否文件夹,Attrib= D ,则是文件夹
		aDir:=MySel_FirstFile
	else
		SplitPath,MySel_FirstFile,MyOutFileName,aDir
	FileList:=""
	Loop, Files, %aDir%\*.*
	{
		SplitPath,A_LoopFileFullPath,,,MyOutExt	
		if (aExt!=""){
			IfNotInString,aExt,%MyOutExt%
				continue
		}
		FileList = %FileList%%A_LoopFileFullPath%`n
	}
	Loop, Parse, FileList, `n			;读取脚本所在目录下的所有文件
	{
		if A_LoopField =  ; 忽略列表末尾的最后一个换行符 (空项).
			continue
		SplitPath,A_LoopField,,,MyOutExt,MyOutNameNoExt
		icon := Select_Value_GetIcon(A_LoopField, MyOutExt)
		DM_Show_CurDirFiles.Add({name:MyOutNameNoExt,icon: Icon,uid:{Handle:"DM_Show_CurDirFiles_Handle",Data:A_LoopField}}) ; Handle的值为点击菜单后执行的功能
	}
    return DM_Show_CurDirFiles  ; 必须返回子菜单对象
}

DM_Show_CurDirFiles_Handle(aMsg, aObj)
{
    If (aMsg = "OnRun")
		DM_Run_Action1(aObj.Uid.Data)		;左键【运行】
	else If (aMsg = "OnRButton")
		DM_Open_Action2(aObj.Uid.Data)	;右键【打开所在文件目录】
	;~ else If (aMsg = "onmbutton")
		;~ DM_Open_Action(aObj.Uid.Data)	;中键【xxxxx】
}

DM_Run_Action1(aObj){
	run,%aObj%
}

DM_Open_Action2(aObj){
	SplitPath,aObj,,MyOutDir
	run,%MyOutDir%
	sleep,200
	send,{Esc}{esc}{esc}
}